package testPackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * step by step 05 CSS定位器
 * 复杂元素定位器
 * 级联样式定位元素
 * CSS选择器规则
 * 1、使用id  #id
 * 2、使用class  .class
 * 3、使用标签    -tagName
 * 4、-输入 选择所有输入类型元素   如：-[name = "firstName"]
 * CSS定位组合
 * 5、标签和id   -tagName#id  例：-input#frame 定位id为frame的input类型元素
 * 6、标签和类   -tagName.class 例：-input.textBox
 * 定位class为textBox的input类型元素
 * 7、标签和属性  -tagName[attributeName = ""attributeValue]
 * -input[name = "firstName"]  定位input类型name属性值为firstName的元素
 * 定位子元素（仅直子）
 * 8、CSS选择器规则- parentLocator > childLocator   -div#buttonDiv > button
 * 先定位id为buttonDiv的div元素再定位到其子元素button
 * 9.定位元素中的子元素或子子元素（非直子） CSS选择器规则- locator1 locator2
 * -div#buttonDiv  button    先定位到Id为buttonDiv的div类型标签，
 * 再定位到其里面的button（非直子元素）
 * 10、第n个孩子  CSS选择器规则- ：nth-child(n)
 * #testingType li : nth-child(2)
 * 选择id为testingType的元素，再找到li类型的第二个子元素
 * 11、定位兄弟姐妹 CSS选择器规则- locator1 + locator2
 * 例：-li#automation + li    先找到id为automation的li元素再选择与其相邻的li元素
 * 用于处理具有id和动态生成的其它定位符的动态元素（事先未知）。可以通过使用动态元素的
 * 不同父级同级关系来利用上述定位符。
 * 一些特殊的CSS定位器，可以匹配属性的部分值
 * 11、CSS选择器规则- [attribute^ = attributeValue]  匹配开头部分
 * id^= "user1" 选择以user1开头的id的元素
 * 12、CSS选择器规则- [attribute $ = attributeValue] 匹配结尾
 * id $= "btn_123"    选择id以btn_123结尾的元素
 * 13、CSS选择规则- [attribute * =  attributeValue]  包含关系
 * id * = "btn"     选择id值包含“btn”的元素
 *
 *
 */
public class Selenium06 {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver","D:\\\\Enviroments\\\\geckodriver-v0.26.0-win64\\\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");

        //CSS选择器 使用类.class
        driver.findElement(By.cssSelector(".s_ipt")).sendKeys("淘宝");
    }

}
